package br.com.sige.managedBean;

import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import br.com.sige.contratoEjb.ProcessoContrato;
import br.com.sige.entidade.Processo;

@ManagedBean(name = "processoBean")
@RequestScoped
public class ProcessoBean {
	
	@EJB
	private ProcessoContrato processoContrato;

	private Processo processo;

	private List<Processo> listaProcesso;
	
	Boolean editable = false;


	public void salvar(){
		try {	
			if (processo == null) {
				this.processoContrato.salvar(processo);
			}else{
				this.processoContrato.salvar(getProcesso());
				processo = new Processo();
			}
			retornar();

		} catch (Exception e) {
			
			this.addMensagem(FacesMessage.SEVERITY_WARN, "Erro ao cadastrar processo");
			e.printStackTrace();
			
		}
	}
	
	public String editAction(Processo Processo) { 
		setEditable(true);
		return null;
	}
//	
//	public void editar(){
//
//		this.processoContrato.editar(getProcesso());
//		processo = new Processo();
//		retornar();
//	}
	
	public void excluir(){
		this.processoContrato.excluir(getProcesso());
		processo = new Processo();
		this.listarProcesso();
	}
	
	private void retornar() {
		this.addMensagem(FacesMessage.SEVERITY_INFO,"Operacao realizada com sucesso");
		this.listarProcesso();
		processo = new Processo();
	}
	
	private void addMensagem(Severity tipo, String msg) {
		FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(tipo, "", msg));
	}
	
	public void listarProcesso() {
		this.listaProcesso = this.processoContrato.listarProcesso();
	}
	
	public Processo getProcesso() {
		if (processo == null) {
			processo = new Processo();
		}
		return processo;
		}

	public void setProcesso(Processo Processo) {
		this.processo = Processo;
	}
	
	public List<Processo> getListaProcesso() {
		if (listaProcesso == null) {
			this.listarProcesso();
		}
		return listaProcesso;
		}

	public void setListaProcesso(List<Processo> listaProcesso) {
		this.listaProcesso = listaProcesso;
	}

	public Boolean getEditable() {
		return editable;
	}

	public void setEditable(Boolean editable) {
		this.editable = editable;
	}
	
}